/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AccesoDatos.IDAO;

import ObjetoDominio.Archivo;
import ObjetoDominio.Usuario;
import java.util.List;

/**
 *Clase contrato DAO para el acceso del Archivo
 * @author familia
 */
public interface IDAOArchivo {
    
    /**
     * metodo que descarga los archivos desde una fuente
     * @param arhivo datos del archivo a descargar
     * necesitado puede ser nulleable
     */
    void DescargarArchivo(Archivo arhivo, Usuario usuario);
    
    /**
     * metodo que reanuda la descarga de un archivo desde una fuente
     * @param arhivo datos del archivo a descargar
     * necesitado puede ser nulleable
     */
    void ReanudarDescarga(Archivo arhivo);
    
    /**
     * metodo que Carga los archivos desde una fuente
     * @param arhivo datos del archivo a descargar
     * @param estado objeto para indicar el estado de la descarga de no ser 
     * necesitado puede ser nulleable
     */
    void CargarArchivo(Archivo arhivo, Usuario usuario);
    
    /**
     * metodo que reanuda la craga de un archivo del cliente
     * @param arhivo datos del archivo a descargar
     * necesitado puede ser nulleable
     */
    void ReanudarCargar(Archivo arhivo);
    
    /**
     * metodo que obtiene la lista de archivos del cliente
     * @param arhivo datos del archivo a descargar
     * necesitado puede ser nulleable
     */
    List<Archivo> ObtenerListaArchivos(Usuario usuario);
    
    /**
     * metodo que obtiene la lista de archivos del cliente
     * @param arhivo datos del archivo a descargar
     * @param estado objeto para indicar el estado de la descarga de no ser 
     * necesitado puede ser nulleable
     */
    void EnviarListaArchivos(List<Archivo> archivos);
    
    
}
